from django.shortcuts import render

# Create your views here.
from rest_framework_extensions.cache.mixins import CacheResponseMixin

"""省市区地址查询"""

# 请求省份信息
# 请求方式 GET /areas/infos/
# 请求市县区信息
# 请求方式 GET/areas/infos/(?P<pk>\d+)/
from rest_framework.viewsets import ReadOnlyModelViewSet

from areas.models import Area
from areas.serializers import AreaSerializer, SubAreaSerializer

"""
既需要查询列表数据,又要查询详情信息,所以可以使用视图集,继承自ReadOnlyModelViewSet,
它继承自GenericAPIVIew，同时包括了ListModelMixin、RetrieveModelMixin。
"""


class AreasViewSet(CacheResponseMixin,ReadOnlyModelViewSet):
    pagination_class = None
    # ReadOnlyModelViewSet继承自GenericAPIVIew,所以需要设置属性query_set或者重写get_queryset方法获得查询结果集,
    # 由于我们获取省市信息是不同的逻辑,所以可以重写方法
    def get_queryset(self):
        if self.action == 'list':
            return Area.objects.filter(parent__isnull=True)
        else:
            return Area.objects.all()

    # ReadOnlyModelViewSet继承自GenericAPIVIew,所以需要设置属性serializer_class或者重写get_serializer_class方法获得查询结果集,
    # 由于省市级序列化器不同,所以需要重写get_serializer_class方法
    def get_serializer_class(self):
        if self.action == 'list':
            return AreaSerializer
        else:
            return SubAreaSerializer
